define(function(require, exports){
	var $      = require("jquery");
	var util   = require('util');
	var view	= require('@base/view');
	var pubjs  = require('pubjs');
	var UEConfig = require('@libs/ueditor/ueditor.config.js');
	var UE = require('@libs/ueditor/ueditor.all.min.js');

	// 多功能编辑窗口(来自百度ueditor)
	var Ueditor = view.container.extend({
		init: function(config, parent){
			config = pubjs.conf(config, {
				'class': 'uk-form M-ueditor',
				'width': 1000,
				'height': 400,
				'UEDITOR_CONFIG': {
					// 重置ueditor默认配置

					// 设置路径
					'UEDITOR_HOME_URL': 'pubjs/source/libs/ueditor/',
					// 编辑器层级的基数,默认是900
					'zIndex': 99,
					// 启用自动保存
					'enableAutoSave': false,
					// 自动保存间隔时间， 单位ms
					'saveInterval': 1000000,
					// 初始化宽度
					// 'initialFrameWidth': 1000,
					// 初始化高度
					// 'initialFrameHeight': 400,
					//是否焦点
					'focus': false,
					// 是否自动长高,默认true
					'autoHeightEnabled': false,

					// 常用配置
					// 工具栏上的所有的功能按钮和下拉框，可以在new编辑器的实例时选择自己需要的从新定义
					'toolbars': [[
						'fullscreen', 'source', '|', 'undo', 'redo', '|',
						'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',
						'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',
						'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',
						'directionalityltr', 'directionalityrtl', 'indent', '|',
						'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|',
						'link', 'unlink', 'anchor', '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',
						'simpleupload', 'insertimage', 'emotion', '|',
						'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage', '|',
						'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',
						'print', 'preview', 'searchreplace'
					]],

					/* 上传图片配置项 */
					'imageActionName': 'imageUpload', /* 执行上传图片的action名称 */
					'imageFieldName': 'file', /* 提交的图片表单名称 */
					'imageMaxSize': 2048000, /* 上传大小限制，单位B */
					'imageAllowFiles': ['.png', '.jpg', '.jpeg', '.gif'],
					'imageUrlPrefix': '',
					'imageCompressEnable': true, /* 是否压缩图片,默认是true */
					'imageCompressBorder': 1600, /* 图片压缩最长边限制 */
					'imageInsertAlign': 'none', /* 插入的图片浮动方式 */


					// 服务器统一请求接口路径
					'serverUrl': '/api/dsp/upload?type=ueditor'

				}
			});

			this.Super('init', arguments);
		},
		afterBuild: function(){
			var self = this;
			var el = self.getDOM();
			var c = self.getConfig();
			// 定义唯一id
			this.$guid = 'ueditor'+util.guid();

			var con = $([
				'<script id="'+self.$guid+'" type="text/plain"></script>'
			].join('')).appendTo(el);

			if(c.width){
				con.width(c.width);
			}
			if(c.height){
				con.height(c.height);
			}
			var options = util.extend(UEConfig, c.UEDITOR_CONFIG);

			UE.getEditor(self.$guid, options);

		},
		setData: function(data){
			if(data){
				UE.getEditor(this.$guid).ready(function(){
					this.setContent(data);
				});
			}
			return this;
		},
		getData: function(){
			var data = '';
			UE.getEditor(this.$guid).ready(function(){
				data = this.getContent();
			})
			return data;
		},
		reset: function(){
			UE.getEditor(this.$guid).ready(function(){
				this.setContent('');
			});
			return this;
		}
	});

	exports.base = Ueditor;

});